点と曲線・ポリゴンの距離

rgeos パッケージのgDistance 関数を用いて、 点データ(SpatialPoints)と曲線(SpatialLines)またはポリゴン()との距離を計算する。

library(sp)
library(rgeos)

# SpatialPoints形式の座標データ例
h.center <- SpatialPoints(coords=cbind(x=0,y=0))

# SpatialPolygons形式の線分データ例
xpol = c(0,1,1,0,0)
ypol = c(0,0,1,1,0)
P <- SpatialPolygons(list(
  Polygons(list(Polygon(cbind(xpol+1,ypol))), ID="P1"),
  Polygons(list(Polygon(cbind(xpol-1.5,ypol-1))), ID="P2")
  ))

# SpatialLines形式の線分データ例
L <- SpatialLines(list(
  Lines(Line(rbind(c(-1,-0.5), c(2,-0.5))), "L1")
  ))

# 作図
plot(P,axes=TRUE,xlim=c(-2.05,2.05),ylim=c(-1.05,1.00))
points(h.center,col="red",pch=19)
lines(L)

plot of chunk unnamed-chunk-1

# 線分との距離
gDistance(h.center,L)
## [1] 0.5
# ポリゴンとの距離
gDistance(h.center,P) 
## [1] 0.5